{ "cells": [ { "cell_type": "markdown", "id": "dressed-storm", "metadata": {}, "source": [ "# Handling Text Data\n", "\n", "Below are a few examples of how to play with text data. We'll walk through some exercises in class with this!" ] }, { "cell_type": "code", "execution_count": 99, "id": "prepared-roads", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "text_data = pd.read_csv(\"pa3_orig/Bills Mafia.csv\")" ] }, { "cell_type": "code", "execution_count": 100, "id": "neural-server", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idtextlabel
01423946923560640514I haven’t seen a single story about a vaccinat...NaN
11415395068102467588WHAT IS GRAPHENE OXIDE? Main Ingredient in Pfi...NaN
21395622329376444416MO: Vaccine appointments available at Walgreen...NaN
31378272239687065610PETITION: No to mandatory vaccination for the ...NaN
41425352057050091521CDC açıkladı: Moderna ve Pfizer-BioNTech aşısı...NaN
\n", "
" ], "text/plain": [ " id text \\\n", "0 1423946923560640514 I haven’t seen a single story about a vaccinat... \n", "1 1415395068102467588 WHAT IS GRAPHENE OXIDE? Main Ingredient in Pfi... \n", "2 1395622329376444416 MO: Vaccine appointments available at Walgreen... \n", "3 1378272239687065610 PETITION: No to mandatory vaccination for the ... \n", "4 1425352057050091521 CDC açıkladı: Moderna ve Pfizer-BioNTech aşısı... \n", "\n", " label \n", "0 NaN \n", "1 NaN \n", "2 NaN \n", "3 NaN \n", "4 NaN " ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "text_data.head()" ] }, { "cell_type": "code", "execution_count": 101, "id": "chemical-armstrong", "metadata": {}, "outputs": [], "source": [ "documents = [t for t in text_data.text]" ] }, { "cell_type": "code", "execution_count": 103, "id": "civilian-quick", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'I haven’t seen a single story about a vaccinated person who caught Covid and wished they hadn’t got the vaccine. So weird. 🤔'" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "documents[0]" ] }, { "cell_type": "code", "execution_count": 104, "id": "instrumental-coalition", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1586\n", "First ten features: 000, 03, 05, 050, 06, 07719, 102, 104, 11, 117\n", "Sample Doc: I haven’t seen a single story about a vaccinated person who caught Covid and wished they hadn’t got the vaccine. So weird. 🤔\n", "Sample Doc Features: haven, seen, single, story, about, vaccinated, person, who, caught, covid, and, wished, they, hadn, got, the, vaccine, so, weird\n" ] } ], "source": [ "from sklearn.feature_extraction.text import CountVectorizer\n", "\n", "def fit_vectorizer(vectorizer, sample_doc_index=0, documents= documents):\n", " X = vectorizer.fit_transform(documents)\n", " features = vectorizer.get_feature_names()\n", " print(len(vectorizer.get_feature_names()))\n", " print(\"First ten features: {}\".format(\", \".join(features[:10])))\n", " print(\"Sample Doc: {}\".format(documents[sample_doc_index]))\n", " print(\"Sample Doc Features: {}\".format(\", \".join([features[i] for i in X[doc_index].nonzero()[1]])))\n", " return X, features\n", "\n", "X, features = fit_vectorizer(CountVectorizer(analyzer='word'))" ] }, { "cell_type": "markdown", "id": "level-crossing", "metadata": {}, "source": [ "Things we also might thing we want:\n", "\n", "- Filtering out stuff (what? Why?)\n", "- Characters instead of words (why?)\n", "- Ngrams (huh? Why?)\n", "- ... what else?" ] }, { "cell_type": "code", "execution_count": 105, "id": "beneficial-couple", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "15\n", "First ten features: 19, 19 vaccine, amp, covid, covid 19, covid 19 vaccine, don, just, mandatory, mandatory vaccination\n", "Sample Doc: I haven’t seen a single story about a vaccinated person who caught Covid and wished they hadn’t got the vaccine. So weird. 🤔\n", "Sample Doc Features: vaccinated, covid, vaccine\n" ] } ], "source": [ "X, features = fit_vectorizer(CountVectorizer(analyzer=\"word\",\n", " ngram_range=(1, 3), \n", " min_df=10,\n", " max_df=0.75, stop_words='english'))" ] }, { "cell_type": "code", "execution_count": 106, "id": "organized-twelve", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1186\n", "First ten features: #, #c, #co, &, &a, &am, &, &, -, 1\n", "Sample Doc: I haven’t seen a single story about a vaccinated person who caught Covid and wished they hadn’t got the vaccine. So weird. 🤔\n", "Sample Doc Features: i , h, ha, av, ve, en, n’, ’t, s, se, ee, n , a , si, ng, gl, le, st, to, or, ry, y , ab, bo, ou, ut, na, at, te, ed, d , p, pe, rs, so, on, w, wh, ho, o , c, ca, au, ug, gh, ht, co, ov, vi, id, an, nd, wi, is, sh, he, th, ey, ad, g, go, ot, e., . , we, ei, ir, rd, d., ha, hav, ave, ven, n’t, ’t , se, en , n a, a , a s, si, ing, le , e s, st, tor, ory, ry , y a, ab, abo, bou, out, ut , t a, a v, ina, nat, ate, ted, ed , pe, per, ers, son, on , wh, who, ho , ca, ugh, ght, t c, co, cov, ovi, vid, id , d a, an, and, nd , d w, wi, ish, d t, th, the, t g, go, ot , t t, he , e v, ine, e. , . s, so, so , we, hav, have, n’t , tory, ory , abo, abou, bout, out , a va, cina, inat, nate, ated, ted , who, who , cov, covi, ovid, vid , and, and , ed t, d th, the, t th, the , he v, e va, cine, have, tory , abou, about, bout , a vac, ccina, cinat, inate, nated, ated , who , covi, covid, ovid , and , t the, the , the v, he va, e vac, ccine, about, about , a vacc, accina, ccinat, cinate, inated, nated , covid, covid , t the , the v, the va, he vac, e vacc, accine\n" ] } ], "source": [ "\n", "char_vectorizer = CountVectorizer(analyzer='char', \n", " ngram_range=(2, 6),\n", " min_df=10, max_df=0.75)\n", "X, features = fit_vectorizer(char_vectorizer)" ] }, { "cell_type": "code", "execution_count": 107, "id": "changing-seven", "metadata": {}, "outputs": [], "source": [ "import spacy\n", "\n", "nlp = spacy.load(\"en_core_web_sm\")\n", "\n", "def spacy_tokenizer(tweet):\n", " return [\"{}\".format(c.lemma_) for c in nlp(tweet)]" ] }, { "cell_type": "code", "execution_count": 108, "id": "olympic-trigger", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1496\n", "First ten features: \n", ", \n", "\n", ", \n", " , , !, \", #, %, &, '\n", "Sample Doc: I haven’t seen a single story about a vaccinated person who caught Covid and wished they hadn’t got the vaccine. So weird. 🤔\n", "Sample Doc Features: I, have, not, see, a, single, story, about, vaccinated, person, who, catch, covid, and, wish, they, get, the, vaccine, ., so, weird, 🤔\n" ] } ], "source": [ "vectorizer = CountVectorizer(tokenizer=spacy_tokenizer)\n", "X, features = fit_vectorizer(vectorizer)" ] }, { "cell_type": "markdown", "id": "attended-sheriff", "metadata": {}, "source": [ "# Dimensionality Reduction" ] }, { "cell_type": "markdown", "id": "modular-myrtle", "metadata": {}, "source": [ "## Toy Example (from Varun)" ] }, { "cell_type": "code", "execution_count": 53, "id": "twenty-garlic", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import math\n", "import matplotlib.pyplot as plt\n", "from sklearn.preprocessing import scale" ] }, { "cell_type": "code", "execution_count": 54, "id": "established-blues", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# First generate some data\n", "mu = np.array([0,0])\n", "Sigma = np.array([[ 46.28249177, 26.12496001],\n", " [ 26.12496001, 19.55457642]])\n", "X = np.random.multivariate_normal(mu,Sigma,1000)\n", "fig = plt.figure(figsize=[8,8])\n", "plt.scatter(X[:,0],X[:,1])\n", "plt.xlabel('x', fontsize=12)\n", "plt.ylabel('y', fontsize=12)\n", "plt.grid(axis='both')" ] }, { "cell_type": "code", "execution_count": 55, "id": "annoying-complement", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[62.26319119 3.573877 ]\n" ] }, { "data": { "text/plain": [ "array([[ 0.85305734, -0.52181718],\n", " [ 0.52181718, 0.85305734]])" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# perform PCA\n", "L,U=np.linalg.eig(Sigma)\n", "# eigenvalues\n", "print(L)\n", "# eigenvectors\n", "U" ] }, { "cell_type": "code", "execution_count": 56, "id": "activated-draft", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuwAAAHlCAYAAACux6mpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABTCElEQVR4nO3dd3xUZdr/8e8FQaQJCtIRLIhtESUiuirkwYZKsYM+2EVFXMvuKq6K2HZta6+slcffClgQFGwgsYIiiiICimBBUFAQpSgErt8fZ8JMkkkySSZzTobP+/WaF+fcp8x1nxngm5P7nGPuLgAAAADRVCvsAgAAAACUjsAOAAAARBiBHQAAAIgwAjsAAAAQYQR2AAAAIMII7AAAAECE5YRdQNiaNWvmHTp0SNv+1qxZowYNGqRtf2HIhj5I2dEP+hAd2dCPbOiDlB39SHcfZs6c+ZO7b5+2HQKIlC0+sHfo0EEffvhh2vaXn5+vnj17pm1/YciGPkjZ0Q/6EB3Z0I9s6IOUHf1Idx/M7Ju07QxA5DAkBgAAAIgwAjsAAAAQYQR2AAAAIMII7AAAAECEEdgBAACACCOwAwAAABFGYAcAAAAijMAOAAAARBiBHQAAAIgwAjsAAAAQYQR2AAAAIMII7AAAAECEEdgBAACACCOwAwAAABEWucBuZo+Z2TIz+6yU5WZm95jZAjP71Mz2TVh2pJnNjy0blrmqAQAAgOoRucAu6QlJR5axvLekjrHXYEkPSpKZ1ZZ0f2z5HpIGmtke1VopgLRbuXKlVq9eHXYZNR7HsSiOB4CaLHKB3d3fkrSijFX6SRrlgemSmphZK0ndJC1w94Xuvl7S6Ni6AGqQFStW6LjjjtOaNWvCLqVG4zgWxfEAUJNFLrCnoI2k7xLmF8faSmtHFhgxYoTMLOnrqaeekiSdccYZys3NDbnSzBg7dqyeeOKJan+fZ555Rn379lWbNm3UsGFDde3aVU8//XTa9r9u3Tp17969yOvUU0/VBx98oNGjR6ftfdLl888/V69evVS/fn21bt1aw4cP18aNG8vc5oknnkj6vX3ooYeKrFeVYx3mcazMMZGk0aNHa99991XDhg3Vpk0bnXbaaVqyZEmRdUo7dhMmTChz3zXtewUA5ckJu4BKsCRtXkZ7yR2YDVYwnEYtWrRQfn5+2opbvXp1WvcXhij24euvv1aDBg106623lljWqFEj5efn67DDDlOPHj021x7FflRUaX24//77tWrVKnXo0KFa33/EiBFq2bKlzjnnHDVu3Fjvv/++TjnlFE2bNk3HHXdcSvso73O4+eabi8zPnz9fzz//vHbaaadIfX4//PCDTjjhBLVv317XX3+9lixZottuu02LFi3S2WefXep28+bNkyTdcccdqlu37ub24v/2VPVYp3Ic0/134rffftOZZ55Z4WPy7rvv6uqrr1b//v116qmnasWKFXr00Uc1ffp0PfTQQ6pVKziXVNqx22abbcrtR9S/V9nw7xOADHL3yL0kdZD0WSnLHpY0MGF+vqRWkg6Q9GpC+5WSrizvvbp27erpNHXq1LTuLwxR7MO1117rTZs2rdA2UexHRZXWh+OPP9579OiRlvcoKCjwP/74I+my5cuXl2gbOHCgd+jQIeX9Z8Pn4O5+zjnneJMmTXzVqlWb22655RavV69ekbbiHn/8cZfkv/32W5n7T8exLk9Zn8XUqVM9+C8hdf/85z8rdUxOPvlk33fffYu0jR8/3iX5559/vrmttGOXDd+pdPdB0ocegf+/efHiVT2vmjgkZoKk02J3i+kuaZW7L5U0Q1JHM9vRzLaSNCC2LrYQyYbE3HfffWrXrp0aNGig/v37a8qUKTKzEme23nnnHfXo0UP169dX06ZNde655+q3334rse/XX39dnTt3VoMGDXTQQQdpzpw5kqTHH39cdevW1S+//FJkv3PmzJGZacqUKSm/V6G33npLl156qRo2bKjGjRurZ8+e+vjjj3XGGWfoueee05tvvrl5iMCIESM2bzd27Fj96U9/Ut26ddWuXTtdddVVKigoKNGXF154QXvuuae23nprvf/++0mPabNmzUq07bPPPlq2bFnS9cuy++6766KLLirRftZZZ9WIoUwffPCBjjjiCG2zzTab2wYMGKB169bpzTffrPL+K3usC78HL7/88ua2RYsWqXnz5vrLX/5S5brK8vLLL1fqmGzYsEGNGzcu0takSRNJwUmkqtp777113nnnlWg/9dRTdfDBB1d5/wCQaZEL7Gb2tKRpkjqZ2WIzO9vMzjez82OrTJK0UNICSf+RNESS3L1A0lBJr0qaK2msu8/JeAdQrQoKCkq8SvP222/roosuUt++fTVu3Dh17tw56a/p3333XfXq1UstW7bUs88+q7vuukuTJk3SmWeeWWS9b7/9Vn//+9911VVX6emnn9ayZct00kknyd03D1kYN25ckW3GjBmj5s2bq2fPnhV6r/z8fPXq1Us5OTl68sknNWbMGB188MH6/vvvdc011ygvL0/77LOPpk2bpmnTpumcc86RJL322ms6+eSTte+++2r8+PG66KKLdPvtt2vo0KFF9v/111/r8ssv15VXXqlJkyZpxx13TO0DkPTee+9pjz0qfgOmPffcU3Pnzi3S9uWXX2rUqFG68cYbK7w/KQh3yb4TqX5HKuLbb7/VbrvtVqRthx12UP369TcP3SjLzjvvrJycHHXq1EkPP/xwSu+ZyrHu0aOH8vLydMMNN0iSVq1apWOOOUbdunXTnXfemdL7VNa8efMqdUzOOussvf322xo1apR+/fVXffHFF7r66quVl5eXtL8VPXbdu3fXjBkzirQVjl+/4447UuwdAERI2Kf4w34xJKakKPbh2muvdQXXJJR4LVq0yN3dTz/9dE/8PDt16uRHHXVUkf1ccMEFLqlIHw866CDv2bNnkfWmTJniknz27Nmb9127dm3/4osvNq8zbtw4l+Rz5851d/e+ffv6EUccUWQ/u+66q1944YUVei939+7du3vXrl39jTfeSHo8ShsSs//++5fY/y233OK1atXy7777bnNfJPnHH3+cdN9lmTx5spuZP/744ylvU3isr7nmGm/Tpk2RZaeccoofdNBBFa6jUOGQifJe6VC7dm2/8847S7S3adPGr7zyylK3e+WVV/yGG27wV1991SdNmuSDBg1ySX7HHXeU+X4VOdZvvfWWS/JXX33VDz/8cN97772TDsFJ/N5v2rTJN2zYsPk1efJkl1SkbcOGDWW+b05OTqWOibv7U0895XXr1t38GR144IG+cuXKIuuUduyGDBlS5r4fffRRz8nJ8XXr1m1uO/DAA/3UU08tc7tMYkgML168KvKqiRedYgvVuHFjTZ48uUR769atS7Rt3LhRCxYs0KWXXlqkvW/fvnrwwQc3z69du1bTpk3TvffeW+RM7EEHHaQ6depo5syZ2muvvSRJHTp0UMeOHTevU3gmcPHixdptt9108skn6/TTT9dPP/2kZs2aadasWfriiy/0yCOPVOi91qxZo/fff1933323zJJdS53cxo0b9dFHH+muu+4q0n7yySfriiuu0LRp03TiiSdKktq0aaMuXbqkvG8pOCt/yimnqF+/fjrjjDMqtK0UnGH//vvv9dtvv6lRo0aaM2eORo8eralTp1Z4X4X69OlT4kxqVbl7kbucmJlq1669eTrZ+mV9TkcccYSOOOKIzfO9e/fWH3/8oRtvvFEXX3zx5gssE1X0WB988ME69NBDdeyxx6pJkyZ6//331bBhwzK3efLJJ0v8ZkeS6tSpU2TevewhKpU5JlOnTtX555+viy++WL1799aPP/6oESNG6Nhjj9XkyZM3H+/Sjt1TTz2le++9N+mxk4Iz7AUFBZo1a5a6d++uMWPG6KOPPkrrHY4AIJMI7KgxcnJyUh7rvHz5cm3cuFHbb799kfbi8ytXrtTGjRs1ZMgQDRkypMR+vvsufqfQwjG2hbbaaitJ0u+//y4p+GGgTp06ev755zV48GCNGTNGbdq00UEHHVSh91q5cqXcXa1atUqpr4V++uknbdiwQS1atCjSXji/YsWKEm2pWrFihXr37q0ddthh8200K2rPPfeUFNytIzc3V8OHD9ehhx6qQw45ZPM6F1xwgSZMmKAlS5aUGxQlabvttisxFrqq3nzzTeXl5W2eL7zzUKNGjUpcoyAFQ1CKfzfKc8IJJ2js2LH6+uuvtdNOOxVZVtljvcsuu2jy5Mm6++671bZt23LXL/7DzsyZM3X++edX6AegbbfdtlLH5K9//av69u2rW265ZXNbly5dtNtuu2n8+PFl3hWnrGNXaPfdd1fjxo01Y8YMdenSRcOGDdNll12mHXbYIeW+AUCUENiRlbbffnvVrl1by5cvL9JefL5JkyabL9o86qijSuwn2dn70jRs2FBHH320xowZo8GDB2vs2LE66aSTNp9pTPW9tt12W9WqVUtLly5NeiFiaZo1a6Y6deqUuEjxxx9/lBSE20IVOXO/du1aHXPMMVq/fr0mTpyoBg0apLxtol133VU5OTmaO3euateurXHjxpW42HXgwIGbb2+YitLOEheXSvgv1LVr1yKhtVGjRpKCsdnFx2V/9913WrNmTYlx3Kkq/jlU9liPHDlSjz32mPbee2898sgjm69pKEvTpk3VtGnTzfOFTwGtyAXAu+22W6WOybx58zRw4MAibZ06dVK9evX01VdfpfTeZX2HzUz77befZsyYodWrV2vdunUaNmxYSvsFgCgisCMr1a5dW7vssovGjx9f5G4RxR+40qBBA3Xv3l3z58/X8OHDq/y+AwYM0Mknn6wXX3xRCxcu1IABAyr8Xg0aNND++++vUaNGJb3vvBSc3S88s1+odu3a6tq1q5555hldcMEFm9vHjh2rWrVq6YADDqhwfwoKCnTiiSfqyy+/1LvvvqvmzZtXeB+JNe+yyy6aN2+exowZo379+mm//fYrsk7i2fZUVMeQmEaNGiUNrd26ddNzzz23eUiPFFxUXK9ePfXo0aNC7/Hcc8+pWbNmat++/ea2yh7r119/XUOHDtUjjzyiXXfdVQcccIBefvll9e7du0I1VUbv3r112223VfiYtG/fXh999FGRtrlz52rdunXlPlvgueeeU+PGjYscu2T2339/Pfnkk3rhhRd0++23b64PAGoiAjtqjIKCAk2fPr1Ee7t27dSmTcmH2p566qkaPny4hg4dqr59++rdd9/VxIkTJanI2Ndbb71VvXr1Uq1atXTCCSeoUaNG+vbbbzVx4kTddNNN2nXXXVOu8eijj1b9+vV13nnnaccdd1S3bt2KLE/1vW6++WYdeuihuuKKKzRs2DA1aNBA06ZNU25uro455pjNQwdeeOEFtW3bVq1bt1br1q113XXX6YgjjtCZZ56pAQMGaPbs2brmmmt07rnnpjRMorghQ4Zo0qRJuvvuu7VixYoix3+fffZR3bp1lZ+fr7y8PE2dOnXz3XBKs+eee2rs2LFauHChZs2aVeF6iit+lrg69e3bVy+99JKOO+44XXHFFVq4cKFGjBihyy67rMhtDUeNGqWzzjpLX331ldq3b6/jjz9e3bp1U+fOnbVx40aNGTNGY8aM0T333FPke5jKsS5uzpw5OvHEE3X55ZfrtNNOkyQdeuihuvbaazMS2M8//3zdc889FT4m559/vi699FK1bt168xj266+/Xh06dCjy26fSjt1FF11U6vj1Qvvvv79uuukm7bXXXmU+xAkAaoSwr3oN+8VdYkqKYh/KukvMDTfc4O4l7xIzdepUv+eee7xNmzZer1497927t48dOzbpHVKmT5/uRxxxhDdq1Mjr16/vu+++u1966aX+yy+/JN23u/uiRYtckr/44otF2k899VSX5MOGDUval/Leq1B+fr537tzZ69Wr540bN/aePXturnv58uXev39/33bbbV2SX3vttZu3Gz16tO+1115ep04db9Om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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# first plot the eigenvectors\n", "ah=0.1 # size of arrow head\n", "f=1.1 # axes range\n", "\n", "plt.figure(figsize=(8,8))\n", "plt.subplot(111,aspect='equal')\n", "plt.arrow(0,0,U[0,0],U[1,0],color='r',linewidth=2,head_width=ah,head_length=ah)\n", "plt.arrow(0,0,U[0,1],U[1,1],color='r',linewidth=2,head_width=ah,head_length=ah)\n", "plt.text(f*U[0,0],f*U[1,0],r'Eigenvector 1, $\\vec{v_1}$ = %.2f $\\vec{x}$ + %.2f $\\vec{y}$' % (U[0,0],U[1,0]), fontsize=15)\n", "plt.text(f*U[0,1],f*U[1,1],r'Eigenvector 2, $\\vec{v_1}$ = %.2f $\\vec{x}$ + %.2f $\\vec{y}$' % (U[0,1],U[1,1]), fontsize=15)\n", "plt.xlim([-f,f])\n", "plt.ylim([-f,f])\n", "plt.xlabel('x',fontsize=15)\n", "plt.ylabel('y',fontsize=15)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 62, "id": "documentary-principle", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(6.731221989551624, 4.117504307401351)" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U[0,0]*math.sqrt(L[0]),U[1,0]*math.sqrt(L[0])" ] }, { "cell_type": "code", "execution_count": 68, "id": "amateur-howard", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot the eigenvectors with the data\n", "plt.figure(figsize=(8,8))\n", "plt.plot(X[:,0],X[:,1],'bo',markersize=5,zorder=0,)\n", "plt.axis('equal')\n", "plt.grid()\n", "plt.title('Principal Components (eigenvectors) of random data', fontsize=12)\n", "plt.xlabel('x', fontsize=12)\n", "plt.ylabel('y', fontsize=12)\n", "\n", "plt.arrow(0,0,U[0,0]*math.sqrt(L[0]),U[1,0]*math.sqrt(L[0]),color='r',linewidth=2,head_width=1,head_length=1)\n", "plt.arrow(0,0,U[0,1]*math.sqrt(L[1]),U[1,1]*math.sqrt(L[1]),color='r',linewidth=2,head_width=1,head_length=1)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 69, "id": "frequent-thinking", "metadata": {}, "outputs": [ { "data": { "image/png": "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Abja+Tef4zXg/KcDOB0Axo8fj9WrV1eb5JbV09OT6OurB+ZZPMyveJhf8THP4qkmvxoa7FX1iLD9InIagGMAHK6qTkB/AcAOrsMmAngp4PyXAbgMAKZPn64zZ86sNskta/Xq1Ujy9dUD8ywe5lc8zK/4mGfxVJNfLVONLyIfAXAWgI+p6ibXrpsBnCwiHSIyGcBuANY0I41EREQjUUNL9mX8J4AOALeKCADcr6qfV9XHROTXAB6HVe+foaq5JqaTiIhoRGmZYK+qu4bsuwjARQ1MDhERUWK0TDU+ERER1QeDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJRyDPRERUcIx2BMRESUcgz0REVHCMdgTERElHIM9ERFRwjHYExERJZyoarPTUBci8hqA55udjjraGsDrzU7ECMM8i4f5FQ/zKz7mWTxR8msnVd3G+2Big33SiciDqjq92ekYSZhn8TC/4mF+xcc8i6ea/GI1PhERUcIx2BMRESUcg/3IdVmzEzACMc/iYX7Fw/yKj3kWT8X5xTZ7IiKihGPJnoiIKOEY7EcYEfmOiDwhIutE5EYR2cK172wR2SAiT4rIUU1MZssQkRNE5DERGRaR6Z59zK8AIvKRfL5sEJGvNzs9rUZELheRV0XkUddjW4rIrSLydP7n2GamsZWIyA4icoeIrM9/Hv81/zjzzIeIZEVkjYj8MZ9fi/KPV5xfDPYjz60A9lbVaQCeAnA2AIjIFAAnA9gLwEcA/FREUk1LZet4FMBx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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# projecting data onto the principal components (no dimensionality reduction here)\n", "Z = np.dot(X,U)\n", "plt.figure(figsize=(8,8))\n", "plt.axis('equal')\n", "plt.grid()\n", "plt.plot(Z[:,0],Z[:,1],'bo',markersize=5)\n", "plt.xlabel('Principal Component 1',fontsize=15)\n", "plt.ylabel('Principal Component 2',fontsize=15)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 70, "id": "combined-effect", "metadata": {}, "outputs": [ { "data": { "image/png": "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eG3/+1JE/ECSOzAWAABmHT5ZCwCARAQxAACJCGIAABIRxAAAJCKIAQBIRBADAJCIIAYAIBFBDABAIoIYAIBEBDEAAIkIYgAAEhHEAAAkIogBAEhEEAMAkIggBgAgEUEMAEAighgAgEQEMQAAiQhiAAASEcQAACQiiAEASEQQAwCQiCAGACARQQwAQCKCGACARAQxAACJCGIAABIRxAAAJCKIAQBIRBADAJCIIAYAIBFBDABAIoIYAIBEBDEAAIkIYgAAEhHEAAAkIogBAEhEEAMAkIggBgAgEUEMAEAighgAgEQEMQAAiQhiAAASEcQAACQiiAEASEQQAwCQiCAGACARQQwAQCKCGACARAQxAACJCGIAABIRxAAAJCKIAQBIRBADAJCIIAYAIBFBDABAIoIYAIBEBDEAAIkIYgAAEnV1ohHb75Z0iaS5ki6PiIs60e543nhDuuUW6e67pYMPlt7zHmnu3Nz+JjOmyW57ww3SJZdIjz8u7bGH1NMjPfts+br33pJdHr948ehtrVsnXXCB9IMfSDvtJM2ZIz39tPSmN0mnnSadeGLZ5swzpTvvlLbeumy3yy7SqlXSQw+V+7fYQtpnH+md75QefVR68skyrjVrpN13l044QXrsMen++6WXXpIipFdfLWMY+X7BAumII6T588v611+Xbr9deuEFacOGsoywpa6u8lwXLChtv/babz6/ri5p221Lvdasqa3faqvSfmnzCM2ZU577/PnlMcPD0vr1rWtfP4aIsbeZno7MHkCDkTrPmdP4O7DVVtLatY3r2tVV7QHfeEOaN0/asOGIht+9+p9583js8jrYeuva70/z2ObOLe2+8Ua53dNTtn/ssfrfx9L2brtJ22wjvfJKea7PPiu9+GL5/thjpf33lw45pLy2Jenaa6Wzz5aee660eeCB0p57SqecIt11l3TTTWXsb31rGeszz0g771y+X7VKev750u9731v2GffeW17fzzxTXtdLl0r//u876vbby/jt8tq/8cYytr33lo46qrQx3n5nZF83NCQ9+KD0y1+WfYpUvq/f/4y3Tz3uOOm220bfb7abC5s6VyRJEdHWohK+P5O0l6T5ku6VtN9Yj1m8eHG0a/36iGOOiejujrDL12OOKesjIpYvX952H5Ppb6LbbOy2/f0R5WU1/tKqreXLl8fatRHbbz/64+bOjTjq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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# projecting data onto the first principal component\n", "Z = np.dot(X,U[:,1])\n", "plt.figure(figsize=(8,8))\n", "plt.axis('equal')\n", "plt.grid()\n", "plt.plot(Z,np.zeros([len(Z),]),'bo',markersize=5)\n", "plt.xlabel('Principal Component 1',fontsize=15)\n", "#plt.ylabel('Principal Component 2',fontsize=15)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "authorized-bangladesh", "metadata": {}, "source": [ "# Applying PCA to text data: An exercise" ] }, { "cell_type": "code", "execution_count": 109, "id": "aerial-utility", "metadata": {}, "outputs": [], "source": [ "from sklearn.decomposition import PCA" ] }, { "cell_type": "code", "execution_count": 110, "id": "quarterly-terrorism", "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv(\"notebooks/programming_assignments/474_s22_assignments/assignment1/part2_data.csv\")" ] }, { "cell_type": "code", "execution_count": 111, "id": "painful-happiness", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
created_utcis_crosspostableis_selfis_videolockedmedia_onlyover_18scoresubreddit_idsubreddit_name_prefixed...titlepermalinktotal_awards_receiveddownsgildednum_commentsnum_crosspostsnum_reportsupsauthor_name
01.582163e+09FalseTrueFalseFalseFalseFalse146606t5_2qh72r/Jokes...Sad News: The founder of /r/jokes has passed away/r/Jokes/comments/f6lii3/sad_news_the_founder_...2000516999NaN146606error521
11.511295e+09FalseTrueFalseFalseFalseFalse137607t5_2qh72r/Jokes...Calm down about the Net Neutrality thing.../r/Jokes/comments/7ekt23/calm_down_about_the_n...150216142NaN137607Victorinox2
21.499278e+09FalseTrueFalseFalseFalseFalse108795t5_2qh72r/Jokes...V/r/Jokes/comments/6lfqep/v/290713601NaN108795MadGo
31.565449e+09FalseTrueFalseFalseFalseTrue105444t5_2qh72r/Jokes...If your surprised that Jeffrey Epstein commite.../r/Jokes/comments/coj45m/if_your_surprised_tha...4801124187NaN105444williseeyoutonight
41.539007e+09FalseTrueFalseFalseFalseFalse100954t5_2qh72r/Jokes...A new Navy recruit has his first day on the su.../r/Jokes/comments/9mf1cz/a_new_navy_recruit_ha...25097726NaN100954Ckarini
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " created_utc is_crosspostable is_self is_video locked media_only \\\n", "0 1.582163e+09 False True False False False \n", "1 1.511295e+09 False True False False False \n", "2 1.499278e+09 False True False False False \n", "3 1.565449e+09 False True False False False \n", "4 1.539007e+09 False True False False False \n", "\n", " over_18 score subreddit_id subreddit_name_prefixed ... \\\n", "0 False 146606 t5_2qh72 r/Jokes ... \n", "1 False 137607 t5_2qh72 r/Jokes ... \n", "2 False 108795 t5_2qh72 r/Jokes ... \n", "3 True 105444 t5_2qh72 r/Jokes ... \n", "4 False 100954 t5_2qh72 r/Jokes ... \n", "\n", " title \\\n", "0 Sad News: The founder of /r/jokes has passed away \n", "1 Calm down about the Net Neutrality thing... \n", "2 V \n", "3 If your surprised that Jeffrey Epstein commite... \n", "4 A new Navy recruit has his first day on the su... \n", "\n", " permalink total_awards_received \\\n", "0 /r/Jokes/comments/f6lii3/sad_news_the_founder_... 200 \n", "1 /r/Jokes/comments/7ekt23/calm_down_about_the_n... 15 \n", "2 /r/Jokes/comments/6lfqep/v/ 29 \n", "3 /r/Jokes/comments/coj45m/if_your_surprised_tha... 48 \n", "4 /r/Jokes/comments/9mf1cz/a_new_navy_recruit_ha... 25 \n", "\n", " downs gilded num_comments num_crossposts num_reports ups \\\n", "0 0 5 1699 9 NaN 146606 \n", "1 0 2 1614 2 NaN 137607 \n", "2 0 7 1360 1 NaN 108795 \n", "3 0 11 2418 7 NaN 105444 \n", "4 0 9 772 6 NaN 100954 \n", "\n", " author_name \n", "0 error521 \n", "1 Victorinox2 \n", "2 MadGo \n", "3 williseeyoutonight \n", "4 Ckarini \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "code", "execution_count": 112, "id": "transsexual-perth", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4385\n", "First ten features: 00, 000, 000 000, 000 people, 000 year, 000 year old, 000 years, 10, 10 000, 10 year\n", "Sample Doc: Sad News: The founder of /r/jokes has passed away\n", "Sample Doc Features: sad, news, founder, jokes, passed, away, passed away\n" ] } ], "source": [ "X, features = fit_vectorizer(CountVectorizer(analyzer=\"word\",\n", " ngram_range=(1, 3), \n", " min_df=10,\n", " max_df=0.75, stop_words='english'),\n", " documents = data.title)" ] }, { "cell_type": "code", "execution_count": 114, "id": "conventional-container", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(22968, (22968, 4385), 4385)" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(data), X.shape, len(features)" ] }, { "cell_type": "code", "execution_count": 83, "id": "accessory-member", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.00862574 0.00802593 0.00671485 0.00617165 0.00592767 0.00550524\n", " 0.00543801 0.00515872 0.00486338 0.00459951]\n", "[39.32616771 37.93421342 34.69778603 33.26473823 32.60058205 31.41749398\n", " 31.22506739 30.41265079 29.52926968 28.71701003]\n" ] } ], "source": [ "pca = PCA(n_components=10)\n", "pca.fit(X.todense())\n", "print(pca.explained_variance_ratio_)\n", "print(pca.singular_values_)" ] }, { "cell_type": "code", "execution_count": 90, "id": "bulgarian-cross", "metadata": {}, "outputs": [], "source": [ "components = pca.components_" ] }, { "cell_type": "code", "execution_count": 96, "id": "catholic-original", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame({\"feature\": features, \"PC1\": components[0,:], \"PC2\": components[1,:]})" ] }, { "cell_type": "code", "execution_count": 98, "id": "celtic-bible", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
featurePC1PC2
4327wp0.304592-0.309737
4356years0.338600-0.272100
2703old0.220882-0.183783
2132just0.177622-0.171714
4350year0.221643-0.156942
............
3795suggests0.0655260.089920
1537finds0.0689250.094339
2628new study0.1298520.181214
3765study0.1955330.267339
2624new0.4743280.650516
\n", "

4385 rows × 3 columns

\n", "
" ], "text/plain": [ " feature PC1 PC2\n", "4327 wp 0.304592 -0.309737\n", "4356 years 0.338600 -0.272100\n", "2703 old 0.220882 -0.183783\n", "2132 just 0.177622 -0.171714\n", "4350 year 0.221643 -0.156942\n", "... ... ... ...\n", "3795 suggests 0.065526 0.089920\n", "1537 finds 0.068925 0.094339\n", "2628 new study 0.129852 0.181214\n", "3765 study 0.195533 0.267339\n", "2624 new 0.474328 0.650516\n", "\n", "[4385 rows x 3 columns]" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sort_values(\"PC2\")" ] }, { "cell_type": "code", "execution_count": null, "id": "organizational-joshua", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "myenv", "language": "python", "name": "myenv" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 5 }